/**
 * 
 */
package com.taobao.snowsnow.hibernate.service;

import java.util.List;

import org.hibernate.criterion.Criterion;

import com.taobao.snowsnow.hibernate.pojo.Trade;

/**
 * @author Tux
 *
 * 创建时间: 2011-4-29 上午09:53:48
 */
public interface TradeService extends BaseService {
	/**
	 * 按id来查找
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public Trade findById(int id);
	
	/**
	 * 按名称来查找
	 * @param name
	 * @return
	 */
	public List<Trade> findByName(String name);
	
	/**
	 * 查找全部
	 * @return
	 */
	public List<Trade> findAll();
	
	/**
	 * <p>按买家ID来查找
	 * @param nick
	 * 			淘宝ID
	 * @return
	 * 			存在的订单
	 * @throws Exception
	 */
	public List<Trade> findByTaoBaoID(String nick);
	
	public List<Trade> findByCriteria(List<Criterion> expression);
	
	/**
	 * <p>按买家ID和订单的状态来来查找
	 * @param nick
	 * 			淘宝ID
	 * @param status
	 * 			订单状态
	 * @return
	 * 			存在的订单
	 * @throws Exception
	 */
	public Trade findByTaoBaoIDAndStatus(String nick, int status);
	
	/**
	 * <p>按订单编号来查找交易
	 * @param tid
	 * 			要查找的订单编号
	 * @return
	 * 			找到的交易
	 * @throws Exception
	 */
	public Trade findByTid(Long tid);
	
	/**
	 * <p>按订单的子订单编号来查找
	 * @param tid
	 * @return
	 */
	public Trade findByMultiTids(long tid);
	
	
	/**
	 * 分页查找
	 * @param page
	 * 			第几页
	 * @param limit
	 * 			每页个数
	 * @return
	 */
	public List<Trade> paging(int page, int limit);
	
	/**
	 * 获取全部客户的数量
	 * @return
	 */
	public long getTotal();
	
	/**
	 * 获取第一个
	 * @return
	 * @throws Exception
	 */
	public Trade getFirstObject();
	
	/**
	 * 获取最后一个元素
	 * @return
	 * @throws Exception
	 */
	public Trade getLastObject();
}
